This invention relates to communication of data, and in particular, to the upstream and downstream flow control of data.
Layered communication protocols are often implemented as a series of sequential functional layers. A well known example of such a sequential process is the seven layer Open System Interconnection (OSI) protocol model. Each software layer in the OSI model has a protocol provider that implements a portion of the overall protocol stack. A software protocol provider typically processes the data passing through its layer as fast as possible.
Traditional flow control approaches require each end of the communication link to implement a flow control mechanism. For example, the X.25 and TCP protocol providers use peer-to-peer flow control to govern the data exchange. However, the high bandwidth of the underlying transmission medium can allow a very large amount of data to be exchanged even though it is being regulated by the existing protocol layers. This high data rate can exhaust or deplete a machine's resources to the point that the machine may not be able to perform other more important tasks.
A method and apparatus to enforce additional data flow control is needed in a single flow control layer that is independently accessible (shared) by the transmitting and the receiving devices or processes.